package TcpNetWork;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

/**
 * @Author Zhang Chao
 * @Date 2021/6/1 20:50
 * @Version 1.0
 */
public class ClientThread  implements Runnable{
    @Override
    public void run() {
        try {
            // 创建一个Socket对象
            // localhost 和 127.0.0.1 表示本机  具体的IP地址；注意：客户端的端口号要和服务器端的一致
            Socket socket = new Socket ("127.0.0.1",9090);
            /////////////////客户端发送消息到服务器//////////////////////////
            // 获取客户端socket的输出流对象
            PrintWriter printWriter = new PrintWriter(socket.getOutputStream());
            // 根据业务逻辑准备客户端发送的信息内容
            String strMsg = "Hello,I am 客户端 from nuc!";
            // 发送信息， 发送到网络中
            // 网络输出流一定要在流额结尾添加一个回车符，否则该数据流不能发送出去
            printWriter.write(strMsg);
            printWriter.write("\n");

            System.out.println("客户端：" + strMsg);
            // 清空发送缓存区
            printWriter.flush();

            /////////////////////客户但接收服务器的消息////////////////////////////////
            // 获取客户端的socket的输入流对象
            BufferedReader bufferedReader = new BufferedReader(
                    new InputStreamReader(socket.getInputStream()));
            // 读取输入流的内容
            String strServerMsg = bufferedReader.readLine();
            // 使用服务器发送的消息进行业务逻辑处理
            System.out.println("客户端：" + strServerMsg);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
